var MesFournisseurs = {
    
    init: function() {
        
        /***********************************************************************
         * Variables
         **********************************************************************/
        var TableFournisseurs = $('table#liste_fournisseurs'),
        LinkCreate = TableFournisseurs.find('a.create'),
        LinkUpdate = TableFournisseurs.find('a.update'),
        LinkDelete = TableFournisseurs.find('a.delete'),
        LinkMore = TableFournisseurs.find('a.more'),
        EditFournisseur = $('div#EditFournisseur'),
        DeleteFournisseur = $('div#DeleteFournisseur'),
        urlDelete;
        
        /***********************************************************************
         * Forms
         **********************************************************************/
        EditFournisseur.dialog({
            autoOpen: false,
            resizable: false,
            width: 500,
            height: 400,
            modal: true,
            buttons: {
                "Valider": function() {
                    var formData = {};
                    var SOCIETE_ID = EditFournisseur.find('input[type=hidden]#SOCIETE_ID').val();
                    var SOCIETE_NOM = EditFournisseur.find('input[type=text]#SOCIETE_NOM').val();
                    var url = EditFournisseur.find('form').attr('action');
                    
                    if (SOCIETE_ID != '') {
                        formData.SOCIETE_ID = SOCIETE_ID;
                    }
                    formData.SOCIETE_NOM = SOCIETE_NOM;
                    
                    $.ajax({
                        type: "GET",
                        url: url,
                        data: formData,
                        async: false,
                        dataType: 'json',
                        success: function(fournisseurs){
                            UpdateList(fournisseurs);
                            EditFournisseur.dialog('close');
                        }
                    });
                },
                Cancel: function() {
                    EditFournisseur.dialog('close');
                }
            },
            close: function() {
                EditFournisseur.html('');
            }
        });
        
        DeleteFournisseur.dialog({
            autoOpen: false,
            resizable: false,
            width: 'auto',
            height: 'auto',
            modal: true,
            buttons: {
                "Valider": function() {
                    $.ajax({
                        type: "GET",
                        url: urlDelete,
                        async: true,
                        dataType: 'json',
                        success: function(fournisseurs){
                            UpdateList(fournisseurs);
                            DeleteFournisseur.dialog('close');
                        }
                    });
                },
                Cancel: function() {
                    DeleteFournisseur.dialog('close');
                }
            }
        });
        
        /***********************************************************************
         * Methods on events
         **********************************************************************/
        function OnCreate(event, element) {
            event.preventDefault();
            var url = $(element).attr('href');
            EditFournisseur.dialog('open').load(url);
        }
        
        function OnUpdate(event, element) {
            event.preventDefault();
            var url = $(element).attr('href');
            EditFournisseur.dialog('open').load(url);
        }
        
        function OnDelete(event, element) {
            event.preventDefault();
            urlDelete = $(element).attr('href');
            DeleteFournisseur.dialog('open');
        }
        
        function OnMore(event, element) {
            event.preventDefault();
            //var url = $(element).attr('href');
            var subGrid = $(element).parents('tr').next();
            
            switch (subGrid.is(':visible')) {
                case true :
                    subGrid.find('td').empty();
                    subGrid.hide();
                    break;
                    
                case false :
                    var subGrids = $('table#liste_fournisseurs tr.subgrid');
                    subGrids.each(function(index, _subGrid) {
                        $(_subGrid).find('td').empty();
                        $(_subGrid).hide();
                    });
                    
                    var base_url = $('input[type=hidden]#base_url').val(),
                    SOCIETE_ID = $(element).parents('tr').attr('id'),
                    urlAdresse = base_url + 'adresse/index?SOCIETE_ID=' + SOCIETE_ID,
                    urlBonDeCommande = base_url + 'bon_de_commande/index?SOCIETE_ID=' + SOCIETE_ID;
                    //urlMatierePremiereFournisseur = base_url + 'matiere_premiere_fournisseur/index?SOCIETE_ID=' + SOCIETE_ID;
                    
                    var content = '';
                    
                    $.ajax({
                        url: urlAdresse,
                        async: false,
                        success: function(contentAdresse){
                            content = content + contentAdresse;
                        }
                    });
                    
                    $.ajax({
                        url: urlBonDeCommande,
                        async: false,
                        success: function(contentBonDeCommande){
                            content = content + contentBonDeCommande;
                        }
                    });
                        
                    subGrid.find('td').append(content);
                    subGrid.show();
                    MesAdresses.init(subGrid.find('td'));
                    MesBonsDeCommande.init(subGrid.find('td'));
                    break;
            }
        }
    
        function UpdateList(fournisseurs) {
            var table = $('table#liste_fournisseurs'),
            tbody = table.find('tbody'),
            base_url = $('input[type=hidden]#base_url').val();
        
            tbody.empty();

            $.each(fournisseurs, function (index, fournisseur){
                var _update = '<a href="' + base_url + 'fournisseur/update?SOCIETE_ID=' + fournisseur.SOCIETE_ID + '" class="btn update">Mettre à jour</a>';
                var _delete = '<a href="' + base_url + 'fournisseur/delete?SOCIETE_ID=' + fournisseur.SOCIETE_ID + '" class="btn delete">Supprimer</a>';
                var _more = '<a href="' + base_url + 'adresse/index?SOCIETE_ID=' + fournisseur.SOCIETE_ID + '" class="btn more">Plus d\'informations</a>';

                var tr = '<tr id="' + fournisseur.SOCIETE_ID + '">';
                tr = tr + '<td>' + fournisseur.SOCIETE_ID + '</td>';
                tr = tr + '<td>' + fournisseur.SOCIETE_NOM + '</td>';
                tr = tr + '<td>' + _update + '' + _delete + '' + _more + '</td>';
                tr = tr + '</tr>';
                tr = tr + '<tr class="subgrid" style="display:none;"><td colspan="3"></td></tr>';

                table.append(tr);
            });
        
            table.find('a.create').click(function(event){
                OnCreate(event, $(this));
            });
            table.find('a.update').click(function(event){
                OnUpdate(event, $(this));
            });
            table.find('a.delete').click(function(event){
                OnDelete(event, $(this));
            });
            table.find('a.more').click(function(event){
                OnMore(event, $(this));
            });
        }
        
        /***********************************************************************
         * Events
         **********************************************************************/
        LinkCreate.on('click', function(event) {
            OnCreate(event, $(this));
        });
        
        LinkUpdate.on('click', function(event) {
            OnUpdate(event, $(this));
        });
        
        LinkDelete.on('click', function(event) {
            OnDelete(event, $(this));
        });
        
        LinkMore.on('click', function(event) {
            OnMore(event, $(this));
        });
        
    }
    
};

$(function(){
    
    $(document).ready(function(){
        
        MesFournisseurs.init();
        
    });
    
});